package zgrjb.snbq.teach_platform.dto.model;

import com.baomidou.mybatisplus.annotation.TableName;
import com.baomidou.mybatisplus.annotation.TableField;
import lombok.AllArgsConstructor;
import lombok.Builder;
import lombok.Data;
import lombok.NoArgsConstructor;

import java.time.LocalDateTime;

/**
 * 消息通知表 DO
 * 对应数据库表：notification
 * 
 * @author system
 * @since 2024-12-28
 */
@Data
@NoArgsConstructor
@AllArgsConstructor
@Builder
@TableName("notification")
public class NotificationDO {

    /**
     * 通知ID
     */
    private Long id;

    /**
     * 接收用户ID
     */
    @TableField("user_id")
    private Long userId;

    /**
     * 通知类型：task,exam,assignment,system,approval
     */
    private String type;

    /**
     * 通知标题
     */
    private String title;

    /**
     * 通知内容
     */
    private String content;

    /**
     * 操作链接
     */
    @TableField("action_url")
    private String actionUrl;

    /**
     * 是否已读
     */
    @TableField("is_read")
    private Integer isRead;

    /**
     * 优先级：1-低，2-中，3-高
     */
    private Integer priority;

    /**
     * 来源ID（关联的资源ID）
     */
    @TableField("source_id")
    private Long sourceId;

    /**
     * 来源类型：exam,assignment,approval
     */
    @TableField("source_type")
    private String sourceType;

    /**
     * 过期时间
     */
    @TableField("expire_time")
    private LocalDateTime expireTime;

    /**
     * AI处理建议
     */
    @TableField("ai_suggestion")
    private String aiSuggestion;

    /**
     * 创建时间
     */
    @TableField("create_time")
    private LocalDateTime createTime;

    /**
     * 更新时间
     */
    @TableField("update_time")
    private LocalDateTime updateTime;
} 